Many applications require connection to remote resources on the Internet. For example, an email application typically requires connection to an email host server. Consider the HOTMAIL® email service that can be accessed using a client email application that connects to a host of the domain name www.hotmail.com. The client email application must resolve the domain name to a specific IP address for a HOTMAIL® email service host server. In this example, multiple host servers exist and the domain name resolution process returns a list of IP addresses for the multiple host servers. Upon receipt of the list in the local DNS resolver, the client email application will typically select the first IP address in the list and attempts to connect to the host server at this IP address. However, if the connection fails or cannot be made, the client email application may or may not incorporate logic to use other IP addresses returned by the DNS, and to attempt to connect to one of the other IP addresses. If the client email application does not incorporate this logic, then the client email application receives an error message and it cannot connect until the resource is available, or the DNS entry for the domain name times out and a different address is acquired. This mechanism can diminish a user's experience of the email system and needlessly waste Internet resources (e.g., by making repeated requests to an unavailable IP address when a suitable alternative IP address is available). Additionally, even if the client email application does incorporate logic to try multiple IP addresses, the knowledge that the first IP address was unavailable is not made available to other applications. Accordingly, other applications will naturally attempt to use the same unavailable IP address in attempting to connect to the same hostname, further diminishing the user's experience and needlessly wasting Internet resources.
Various exemplary methods, devices, systems, etc., described herein provide for client-side failover and, specifically, failover that can enhance user experience.